Реализация фонового Interceptor ротации токенов в мобильном приложении

Перехват ошибок HTTP 401, заморозка очереди запросов, вызов API refresh и разморозка сессии.

Author

Services Task & Simulation Framework Documentation

Published

July 13, 2026

NoteКраткая карточка задачи
  • Репозиторий / Компонент: mobile-app (Клиентское приложение iOS / Android).
  • Категория: Фронтенд.
  • Взаимодействие: Фоновый вызов HTTP POST /api/v1/auth/refresh.
  • Статус: Готово к реализации

  • Инструкция по шагам:
    1. Реализация Interceptor: На уровне сетевого клиента (например, Dio Interceptor / Axios Interceptor) реализовать перехватчик ответов сервера. При получении ошибки HTTP 401 Unauthorized на любой транзакционный запрос, временно приостановить (заморозить) выполнение текущего и всех последующих исходящих запросов, поместив их в буферную очередь (Interceptor Queue).
    2. На Шаге 1 (Фоновый вызов): Извлечь из защищенного хранилища сохраненный refresh_token. Инициировать скрытый фоновый HTTP-запрос POST /api/v1/auth/refresh.
    3. Обработка критического отзыва: Если метод ротации возвращает ошибку HTTP 401 Unauthorized (сессия полностью просрочена или скомпрометирована), полностью очистить буферную очередь запросов, вызвать метод SecureStorage.deleteAll() и совершить жесткий редирект пользователя на экран Логина.
    4. На Шаге 10 (Перезапись и разморозка): При успешном получении ответа HTTP 200 OK, извлечь новые значения token (Access) и refresh_token. Перезаписать их в iOS Keychain / Android Keystore с помощью SecureStorage.write(...). Обновить авторизационный токен в заголовках всех замороженных в буфере запросов и принудительно запустить их повторную отправку (разморозить очередь).

:::